package pl.edu.pw.elka.jtrzasko.proz.warcaby.model;

import pl.edu.pw.elka.jtrzasko.proz.warcaby.figures.FigureColor;

/**
 * Klasa zawiera informacje o graczach bioracych udzial w rozgrywce. (Ich ilosc,
 * kolory figur jakich uzywaja, kolor akywne gracza)
 */
public class Players
{

	/**
	 * Licznik graczy
	 */
	private int counter;
	/**
	 * Kolor gracza ktory ma teraz ruch
	 */
	private FigureColor activePlayerColor;

	/**
	 * Utworzenie nowego, pustego zestawu graczy.
	 */
	public Players()
	{
		counter = 0;
		activePlayerColor = FigureColor.WHITE;
	}

	/**
	 * Dodanie nowego gracza
	 */
	public void add()
	{
		counter++;
	}

	/**
	 * Zmiana gracza ktory ma teraz ruch na kolejnego.
	 */
	public void changeActivePlayer()
	{
		activePlayerColor = activePlayerColor.nextColor();
	}

	/**
	 * Pobranie koloru akatywnego gracza
	 * 
	 * @return kolor aktywnego gracza
	 */
	public FigureColor getActivePlayerColor()
	{
		return activePlayerColor;
	}

	/**
	 * Pobranie koloru nieakatywnego gracza
	 * 
	 * @return kolor nieaktywnego gracza
	 */
	public FigureColor getInactivePlayerColor()
	{
		return activePlayerColor.nextColor();
	}

	/**
	 * Ustawnienie gracza o danym kolorze w stan aktywny
	 * 
	 * @param color
	 *            kolor gracza
	 */
	public void setActivePlayer(FigureColor color)
	{
		activePlayerColor = color;
	}

	/**
	 * Pobranie liczby graczy biracych udzial w grze
	 * @return liczba graczy
	 */
	public int getCounter()
	{
		return counter;
	}

	/**
	 * Przydzielenie koloru dla nowo dodanego gracza
	 * @return Kolor przypisany do gracza
	 */
	public FigureColor getNewPlayerColor()
	{
		if (counter == 1)
			return activePlayerColor;
		return activePlayerColor.nextColor();
	}

	/**
	 * Sorawdza czy jest juz komplet graczy potrzebnych do gry
	 * @return Prawda, jesli mamy wystarczajaca liczbe graczy do rozpoczacia gry.
	 */
	public boolean isAllPlayerAdded()
	{

		if (getCounter() == 2)
			return true;
		return false;
	}

}
